﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ENProyectoSIETE;
using CADProyectoSIETE.Properties;
using System.Configuration;
using System.Data;
using System.Data.Sql;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace CADProyectoSIETE
{
    public class UsuarioCAD
    {
        SqlConnection conexion = new SqlConnection(Settings.Default.BDProyecto7ConnectionString);

        public string insertarUsuario(ENUsuario usuario)
        {
            //string cadenaConexion = Settings.Default.BDProyecto7ConnectionString;
            //SqlConnection conex = new SqlConnection(cadenaConexion);

            try
            {
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from Usuario ", conexion);
                da.Fill(bdvirtual, "usuario"); //dataset con el nombre de usuario
                //Obtenemos la tabla usuarios
                DataTable tabla = new DataTable();
                tabla = bdvirtual.Tables["usuario"];
                //Creamos la nueva fila a insertar
                DataRow nuevafila = tabla.NewRow();

                nuevafila[1] = usuario.NombreUsuario;
                nuevafila[2] = usuario.ClaveUsuario;
                if (usuario.PersonajeUsuario == 0)
                {

                }
                else
                {
                    nuevafila[3] = usuario.PersonajeUsuario;
                }
                nuevafila[4] = usuario.CorreoUsuario;
                nuevafila[5] = usuario.ExperienciaUsuario;
                nuevafila[6] = usuario.DineroUsuario;
                nuevafila[7] = usuario.NivelUsuario;
                


                tabla.Rows.Add(nuevafila);

                SqlCommandBuilder cbuilder = new SqlCommandBuilder(da);
                da.Update(bdvirtual, "usuario");


            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                conexion.Close();
            }

            conexion.Close();
            return "OK";
        }

        public string borrarUsuario(ENUsuario usuario)
        {
            int i = 0;

            try
            {
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from Usuario ", conexion);

                da.Fill(bdvirtual, "usuario");
                //Obtenemos la tabla usuarios
                DataTable tabla = new DataTable();
                tabla = bdvirtual.Tables["usuario"];

                foreach (DataRow registro in tabla.Rows)
                {
                    if ((int)registro["idUsuario"] == usuario.IdUsuario)
                    {
                        tabla.Rows[i].Delete();
                    }
                    i++;
                }

                SqlCommandBuilder cbuilder = new SqlCommandBuilder(da);
                da.Update(bdvirtual, "usuario");
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                conexion.Close();
            }

            conexion.Close();
            return "OK";
        }

        public string editarUsuario(ENUsuario usuario)
        {
            //string cadenaConexion = Settings.Default.BDProyecto7ConnectionString;
            //SqlConnection conex = new SqlConnection(cadenaConexion);

            try
            {
                int i = 0;
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from Usuario", conexion);
                da.Fill(bdvirtual, "usuario"); //dataset con el nombre de personaje
                //Obtenemos la tabla personajes
                DataTable tabla = new DataTable();
                tabla = bdvirtual.Tables["usuario"];
                //tabla.Rows.

                foreach (DataRow registro in tabla.Rows)
                {
                    if ((int)registro["idUsuario"] == usuario.IdUsuario)
                    {

                        tabla.Rows[i][1] = usuario.NombreUsuario;
                        tabla.Rows[i][2] = usuario.ClaveUsuario;
                        if (usuario.PersonajeUsuario == 0)
                        {
                            tabla.Rows[i][3] = null;
                        }
                        else
                        {
                            tabla.Rows[i][3] = usuario.PersonajeUsuario;
                        }
                        tabla.Rows[i][4] = usuario.CorreoUsuario;
                        tabla.Rows[i][5] = usuario.ExperienciaUsuario;
                        tabla.Rows[i][6] = usuario.DineroUsuario;
                        tabla.Rows[i][7] = usuario.NivelUsuario;
                    }
                    i++;
                }


                SqlCommandBuilder cbuilder = new SqlCommandBuilder(da);
                da.Update(bdvirtual, "usuario");

            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                conexion.Close();
            }

            conexion.Close();
            return "OK";
        }

        public ENUsuario obtenerUsuario(int index)
        {

            try
            {
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from Usuario where idUsuario =" + index.ToString(), conexion);

                da.Fill(bdvirtual, "usuario");
                ENUsuario usuario = new ENUsuario();

                foreach (DataRow registro in bdvirtual.Tables["usuario"].Rows)
                {
                    usuario.IdUsuario = int.Parse(registro[0].ToString());
                    usuario.NombreUsuario = registro[1].ToString();
                    usuario.ClaveUsuario = registro[2].ToString();
                    if (registro[3] != null && registro[3].ToString() != "")
                    {
                        usuario.PersonajeUsuario = int.Parse(registro[3].ToString());
                    }
                    else{
                        usuario.PersonajeUsuario = 0;
                    }
                    usuario.CorreoUsuario = registro[4].ToString();
                    usuario.ExperienciaUsuario = int.Parse(registro[5].ToString());
                    usuario.DineroUsuario = int.Parse(registro[6].ToString());
                    usuario.NivelUsuario = int.Parse(registro[7].ToString());
                }

                return usuario;
            }
            catch
            {
                ENUsuario usuarioerror = new ENUsuario();
                return usuarioerror;
            }
            finally
            {
                conexion.Close();
            }
        }

        public DataTable obtenerUsuarioNombre(string nombre,string nom_des)
        {
            try
            {
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = null;
                if (nom_des == "nombre")
                {
                    da = new SqlDataAdapter("select * from usuario where nombreUsuario LIKE '%" + nombre + "%'", conexion);
                }
                else if (nom_des == "descripcion")
                {
                    da = new SqlDataAdapter("select * from usuario where descripcionUsuario LIKE '%" + nombre + "%'", conexion);
                }

                da.Fill(bdvirtual, "usuario");
                DataTable tabla = new DataTable();
                tabla = bdvirtual.Tables["usuario"];

               /* ENUsuario usuario = new ENUsuario();

                foreach (DataRow registro in bdvirtual.Tables["personaje"].Rows)
                {
                    usuario.IdUsuario = int.Parse(registro[0].ToString());
                    usuario.NombreUsuario = registro[1].ToString();
                    usuario.ClaveUsuario = registro[2].ToString();
                    usuario.PersonajeUsuario = int.Parse(registro[3].ToString());
                    usuario.CorreoUsuario = registro[4].ToString();
                    usuario.ExperienciaUsuario = int.Parse(registro[5].ToString());
                    usuario.DineroUsuario = int.Parse(registro[6].ToString());
                    usuario.NivelUsuario = int.Parse(registro[7].ToString());
                }
                */
                return tabla;
            }
            catch
            {
                DataTable tablavacia = new DataTable();
                return tablavacia;
            }
            finally
            {
                conexion.Close();
            }
        }

        public DataSet obtenerUsuarios()
        {
            try
            {
                DataSet bd = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter("select * from Usuario", conexion);
                da.Fill(bd, "usuario");
                return bd;
            }

            catch (Exception ex)
            {
                DataSet bd = new DataSet();
                throw ex;
            }
        }
    }
}
